home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power Programmierung
/
Power-Programmierung CD 2 (Tewi)(1994).iso
/
doc
/
techref
/
kapitel.002
< prev
next >
Wrap
Text File
|
1993-03-01
|
83KB
|
1,282 lines
** technische Referenz für Programmierer für MSDOS und den IBM PC **
─────────────────────────┤ eingetragene Anwenderversion ├───────────────────────────
nicht für den allgemeinen Vertrieb
Urheberrecht (c) 1987, 1990 Dave Williams
Deutsche Übersetzung Urheberrecht (c) 1990 Klaus Overhage
Änderungen und Erweiterungen Urheberrecht (c) 1990 Klaus Overhage
K A P I T E L Z W E I
CPU Port Zuordnungen, Systemspeicherabbildung, BIOS Datenbereich,
Interrupts 00h bis 09h
I N H A L T E
Einführung ........................................................... 2**1
Systemspeicherabbildung .............................................. 2**2
PC Port Zuordnung .................................................... 2**3
reservierte Speicherbereiche ......................................... 2**4
Interruptvektor-Tabelle ...................................... "
BIOS Datenbereich ............................................ "
DOS Datenbereich ............................................. "
BASIC Datenbereich ........................................... "
EGA Kennung .................................................. "
Modell und BIOS ID ........................................... "
die IBM PC System Interrupts (Übersicht) ............................. 2**5
grafische Schnellübersicht 00h-0FFh .......................... "
die IBM-PC System Interrupts (ausführlich) ........................... 2**6
00h-0Fh ...................................................... "
Einführung ........................................................... 2**1
Für die Übereinstimmung in dieser Referenz, sind alle Adressen und Offsets in
Hexadezimal, (falls nicht anders angegeben). Alle hexadezimale Zahlen sind mit einer
führenden Null versehen, wenn sie mit einem alphabetischen Zeichen beginnen,
und enden mit dem Kleinbuchstabe H(h). Die Formate entsprechen der allgemeinen
Verwendung.
Systemspeicherabbildung .............................................. 2**2
Der IBM PC behandelt seinen Adreßbereich als 64k Segmente, aufgeteilt in
Einzelsegmente zu 16k und dann ferner wie notwendig.
┌──────┬─────┬─────┬──────────────────────────────────────────────────────────┐
│ Start│Start│Ende │ │
│ addr.│addr.│addr.│ Verwendung │
│ (Dec)│ (Hex) │ │
├──────┴───────────┴──────────────────────────────────────────────────────────┤
│ *640k RAM Area* │
├──────┬───────────┬──────────────────────────────────────────────────────────┤
│ 0k │ │ Start vom RAM, erstes K ist Interruptvektor-Tabelle │
│ 16k │00000-03FFF│ PC-0 Systemboard RAM Ende │
│ 32k │04000-07FFF│ │
│ 48k │08000-0BFFF│ │
├──────┼───────────┼──────────────────────────────────────────────────────────┤
│ 64k │10000-13FFF│ PC-1 Systemboard RAM Ende │
│ 80k │14000-17FFF│ │
│ 96k │18000-1BFFF│ │
│ 112k │1C000-1FFFF│ │
├──────┼───────────┼──────────────────────────────────────────────────────────┤
│ 128k │20000-23FFF│ │
│ 144k │24000-27FFF│ │
│ 160k │28000-2BFFF│ │
│ 176k │2C000-2FFFF│ │
├──────┼───────────┼──────────────────────────────────────────────────────────┤
│ 192k │30000-33FFF│ │
│ 208k │34000-37FFF│ │
│ 224k │38000-3BFFF│ │
│ 240k │3C000-3FFFF│ │
├──────┼───────────┼──────────────────────────────────────────────────────────┤
│ 256k │40000-43FFF│ PC-2 Systemboard RAM Ende │
│ 272k │44000-47FFF│ │
│ 288k │48000-4BFFF│ │
│ 304k │4C000-4FFFF│ │
├──────┼───────────┼──────────────────────────────────────────────────────────┤
│ 320k │50000-53FFF│ │
│ 336k │54000-57FFF│ │
│ 352k │58000-5BFFF│ │
│ 368k │5C000-5FFFF│ │
├──────┼───────────┼──────────────────────────────────────────────────────────┤
│ 384k │60000-63FFF│ │
│ 400k │64000-67FFF│ │
│ 416k │68000-6BFFF│ │
│ 432k │6C000-6FFFF│ │
├──────┼───────────┼──────────────────────────────────────────────────────────┤
│ 448k │70000-73FFF│ │
│ 464k │74000-77FFF│ │
│ 480k │78000-7BFFF│ │
│ 496k │7C000-7FFFF│ │
├──────┼───────────┼──────────────────────────────────────────────────────────┤
│ 512k │80000-83FFF│ │
│ 528k │84000-87FFF│ │
│ 544k │88000-8BFFF│ das original IBM PC-1 BIOS begrenzt den Speicher bei 544k│
│ 560k │8C000-8FFFF│ │
├──────┼───────────┼──────────────────────────────────────────────────────────┤
│ 576k │90000-93FFF│ │
│ 592k │94000-97FFF│ │
│ 609k │98000-9BFFF│ │
│ 624k │9C000-9FFFF│ bis 640k (oberstes Ende vom RAM Adreßbereich) │
├──────┴───────────┴──────────────────────────────────────────────────────────┤
│ A0000 ***** 64k ***** EGA/VGA Startadresse │
│ A0000 ***** 64k ***** Toshiba 1000 DOS ROM (MS-DOS 2. 11V) │
├──────┬───────────┬──────────────────────────────────────────────────────────┤
│ 640k │A0000-A95B0│ MCGA 320x200 256 Farben Bildschirmpuffer │
│ │ -AF8C0│ MCGA 640x480 2 Farben Bildschirmpuffer │
│ │ -A3FFF│ │
│ 656k │A4000-A7FFF│ │
│ 672k │A8000-ABFFF│ dieses 64k Segment kann für ein zusammenhängendes DOS RAM│
│ 688k │AC000-AFFFF│ mit geeigneter Hardware und Software benutzt werden │
├──────┴───────────┴──────────────────────────────────────────────────────────┤
│ B0000 ***** 64k ***** Mono und CGA Adresse │
├──────┬───────────┬──────────────────────────────────────────────────────────┤
│ 704k │B0000-B3FFF│4k Monochrome Anzeige |der PCjr und die ersten Tandy 1000 │
│ 720k │B4000-B7FFF│ |leiten das BIOS zum direkten │
│ 736k │B8000-BBFFF│ 16k CGA benutzt |Schreiben in den B8 Bereich zum │
│ 756k │BC000-BFFFF│ |Video Gate Bereich und reserv. RAM │
├──────┴───────────┴──────────────────────────────────────────────────────────┤
│ C0000 ***** 64k *************** ROM Erweiterung │
├──────┬───────────┬──────────────────────────────────────────────────────────┤
│ 768k │C0000-C3FFF│ 16k EGA BIOS C000:001E EGA BIOS Kennung (Buchstaben IBM) │
│ 784k │C4000-C5FFF│ │
│ │C6000-C63FF│ 256 Bytes Professional Graphics Display Kommunikationsb. │
│ │C6400-C7FFF│ │
│ 800k │C8000-CBFFF│ 16k Festplatte Steuereinheit BIOS, Laufwerk 0 vorgegeben │
│ │CA000 │ einige zweite Diskette (High Density) BIOS Steuereinheit │
│ 816k │CC000-CDFFF│ 8k IBM PC Netzwerk NETBIOS │
│ │CE000-CFFFF│ │
├──────┴───────────┴──────────────────────────────────────────────────────────┤
│ D0000 ***** 64k ***** ROM Erweiterung │
├──────┬───────────┬──────────────────────────────────────────────────────────┤
│ 832k │D0000-D7FFF│ 32k IBM Cluster Adapter | PCjr erster ROM Einschub │
│ │DA000 │ Sprachkommunikation | Adressenbereich. │
│ 848k │D4000-D7FFF│ | allgemein Erweiterungsspeicher │
│ 864k │D8000-DBFFF│ | Seitenüberlagerungsbereich. │
│ 880k │DC000-DFFFF│ | │
│ │DE000 │ TI Pro vorgegebener Bildschirmpuffer, 4k │
├──────┴───────────┴──────────────────────────────────────────────────────────┤
│ E0000 ***** 64k ***** ROM Erweiterung │
├──────┬───────────┬──────────────────────────────────────────────────────────┤
│ 896k │E0000-E3FFF│ | PCjr zweiter ROM Einschub │
│ 912k │E4000-E7FFF│ | Adressenbereich │
│ 928k │E8000-EBFFF│ | │
│ 944k │EC000-EFFFF│ | freier ROM Sockel beim AT │
├──────┴───────────┴──────────────────────────────────────────────────────────┤
│ F0000 ***** 64k ***** System │
├──────┬───────────┬──────────────────────────────────────────────────────────┤
│ 960k │F0000-F3FFF│ von IBM reserviert | Kassette Adressenbereich │
│ 976k │F4000- │ | (PCjr Kassette) │
│ │F6000 │ Anfang ROM BASIC | BASIC) │
│ 992k │F8000-FB000│ | │
│ 1008k│FC000-FFFFF│ ROM BASIC und original | │
│ │ │ BIOS(Kompatibilitäts BIOS | │
│ │ │ in PS/2) | │
│ 1024k│ FFFFF│ Ende des Speichers (1024k) für 8088 Maschinen │
├──────┼───────────┴─┬────────────────────────────────────────────────────────┤
│ 384k │100000-15FFFF│80286/AT Erweiterungsspeicher Bereich,1Mb Systemplatine │
│ 15Mb │100000-FFFFFF│80286/AT Erweiterungsspeicher Adreßbereich │
│ 15Mb │160000-FDFFFF│Mikro Kanal RAM Erweiterung (15Mb Erweiterungsspeicher) │
│ 128k │FE0000-FFFFFF│Systemboard ROM (PS/2 erweitertes BIOS) │
└──────┴─────────────┴────────────────────────────────────────────────────────┘
Beachten sie daß das ROM BIOS einen doppelten Adreßbereich hat, welcher
veranlässt das beide am Ende von der 1 Megabyte im echtem Modus und am Ende
der 16 Megabyte des geschützten Modus erscheinen. Die Adressen von 0E0000
bis 0FFFFF sind gleich wie 0FE0000 bis 0FFFFFF. Dies ist notwendig wegen
der Unterschiede in der Speicheradressierung zwischen echtem und
geschützten Modus.
PC Port Zuordnung .................................................... 2**3
D sind allgemeine Funktionen im IBM Bereich. Der PCjr, PC-AT, PC Convertible
und PS/2 (beide Busse) haben Erweiterungen. Im gewissen Rahmen, (vom AT und
der PS/2 Reihe ignoriert) duplizieren, oder teilen die Anschlüsse willkürlich neu
zu. Falls Programme wesentliche Portaddressen zur Video oder Systemsteuerung
benutzen, sollte man feststellen auf welcher Maschine es läuft, um die
richtigen Portadressen zu benutzen.
Hex Adresse Funktion Modelle
PCjr|PC|XT|AT|CVT|M30|PS2
0000-000F 8237 DMA Steuereinheit PC PC
0010-001F 8237 DMA Steuereinheit AT PS2 AT
0020-0027 8259A Interrupt Steuereinheit PS2
0020-002F IOSGA Interrupt Funktion PS2 PS2
0020-003F 8259A Interrupt Steuereinheit (AT)
0020-0021 Interrupt Steuereinheit 1, 8259A PC AT PS2
0040-0043 programmierbarer Zeit-Zähler 8253 PC
0040-0047 programmierbare Zeit-Zähler PS2
0040-005F 8253-5 programmierbare Zeit-Zähler AT
Anmerkung 1) 0041 war auffrischen des Speichers in PCs.
Wird nicht benutzt bei PS/2.
2) einige der ersten 80386 Maschinen benutzen
statisches RAM und benutzen dies nicht, d.h.
Der PCjr frischt den vertikalen Strahlrück-
laufsignal des Bildschirms auf.
0060-0063 Tastatur Steuereinheit 8255A PC
0060-006F 8042 Tastatur Steuereinheit AT
0060 IOSGA Tastatureingabe Port PS2
0061 Lautsprecher PCjr PC XT AT CVT
0061 IOSGA Lautsprechersteuerung M30 PS2
0061 auf einige Nachbauten, Steuerung Turbo Modus über Bit 2
0061 Toshiba 1000 - Systembefehl
0062 IOSGA Ausstattungskontrolle M30 PS2
0062 Toshiba 1000 - Systemzustand, Port C
0063 SSGA, nicht dokumentiert PS2
0063 Toshiba 1000 - Modus einstellen
0064 Tastatur Hilfseinheit PS2
0065-006A SSGA, nicht dokumentiert PS2
006B SSGA, RAM aktivieren / remap PS2
006C-006F SSGA, nicht dokumentiert PS2
0070 AT CMOS schreiben interne Register
0071 AT CMOS lesen interne Register
0070-0071 CMOS Echtzeituhr, NMI maskieren PS2
0070-007F CMOS Echtzeituhr, NMI maskieren AT
0074-0076 reserviert PS2
0800-008F SSGA DMA Seitenregister PS2
0080-009F DMA Seitenregister, 74LS612 AT
0090 zentrale Vermittlungssteuerung Port (Mikro Kanal)
0091 Rückmeldung gewählte Karte (Mikro Kanal)
0092 Systemsteuerung Port A (Mikro Kanal)
0093 reserviert (Mikro Kanal)
0094 Systemboard Einstellung (Mikro Kanal)
0096 POS "CD Einstellung" Selektor (Mikro Kanal)
00A0-00A1 Interrupt Steuereinheit 2, 8259A AT PS2
00A0-00AF IOSGA NMI Maskenregister PS2
00B0-00BF Echtzeituhr/Kalender, (nicht dokumentiert) PS2
00C0-00DF reserviert PCjr PC XT AT CVT M30
00C0-00CF DOS ROM Register, Toshiba 1000
00D0-00EF Spezialregister, Toshiba 1000
00C0 0C1 Tastenregister, Toshiba 1000
00C1 Tastatur Senderegister, Toshiba 1000
00C2 Tastatur Empfangsregister, Toshiba 1000
00C3 Tastatur Statusregister, Toshiba 1000
00C8 DOS ROM Seite Register, Toshiba 1000
00E0 CPU Geschwindigkeitssteuerung, Toshiba 1000
00E1 Tastatur Zustand/0E2 Tastenregister, Toshiba 1000
00E2 Arbeitsregister, Toshiba 1000
00E3 0E4 Tastenregister, Toshiba 1000
00E4 Systemsteuerungsregister 0, Toshiba 1000
00E5 0E6 Tastenregister, Toshiba 1000
00E6 Systemsteuerungsregister 1, Toshiba 1000
00EE EMS Einheit Index, Toshiba 1000
00EF EMS Einheit Daten, Toshiba 1000
00C0-00DF DMA Steuereinheit 2, 8237A-5 AT PS2
00E0-00EF Echtzeituhr/Kalender (nicht dokumentiert) M30 PS2
00F0-00FF PS/2 Arithmetikprozessor I/O (Modell 50+)(Diskette IO beim PCjr)
0100-0101 PS/2 POS Adapter ID Auskunft (Mikro Kanal)
0102-0107 PS/2 POS Adapter Ausstattungsauskunft (Mikro Kanal)
01F0-01F8 Festplatte AT PS2
0200-0201 Spielsteuerungsadapter (Joystick)
0200-020F Spielsteuerungseinheit PC AT
0208-020F Toshiba 1000 - EMS Einheit I/O #1
020C-020D von IBM reserviert
0210-0217 Erweiterungsbox (PC, XT)
0218-021F Toshiba 1000 - EMS Einheit I/O #2
021F von IBM reserviert
0258-025F Toshiba 1000 - EMS Einheit I/O #3
0258-0259 LIM EMS 3.1 (nicht definiert in 3.2+)
0268-026F Toshiba 1000 - EMS Einheit I/O #4
0278-027F paralleler Druckeranschluß 2 AT
0278-027B paralleler Druckeranschluß 3 PS2
02A2 Taktgeber Chip in den ersten Sperry PCs
02A8-02AF Toshiba 1000 - EMS Einheit I/O #5
02B8-02BF Toshiba 1000 - EMS Einheit I/O #6
02B0-02DF EGA (alternativ) PC AT
02C0-02DF Toshiba 1000 - Echtzeituhr
02E1 GPIB (Adapter 0) AT
02E2-02E3 Datenerfassung (Adapter 0) AT
02E8 "Industriestandard" COM4
02E8-02EF Toshiba 1000 - EMS Einheit I/O #7
02F8-02FF serielle Kommunikationstechnik (COM2) PC AT PS2
0300-031F Prototypenkarte PC AT
0300-031F Leading Edge Modell D Taktgeber --------------------
0320-032F Festplattensteuereinheit PC
0320 Perstor erste HD Steuereinheit --------------------
0324 Perstor zweite HD Steuereinheit --------------------
0340 Sony CD-ROM --------------------
0348-0357 DCA 3278
0360-0367 PC Netzwerk (niedrige Adresse)
0368-036F PC Netzwerk (hohe Adresse) AT
0370 Colorado Speicher externes Bandlaufwerk Steuerungsport
bei einigen "zweite Steuereinheit" für Diskettenkarten
0378-037F paralleler Druckeranschluß PC AT
0378-037B paralleler Druckeranschluß PS2
0380-038F SDLC, bi-synchron 2 PC AT
0380-0389 BSC Kommunikationstechnik (alternativ) PC
0390-0393 Cluster (Adapter 0) PC AT
03A0-03A9 BSC Kommunikationstechnik (erste) PC AT
03B0-03BF Monochrom/paralleler Druckeradapter PC AT
03B4-03B5 Video Untersystem PS2
03BA Video Untersystem PS2
03BC-03BF paralleler Druckeranschluß 1 PS2
03C0-03CF erweiteter Grafikadapter
03C0-03DA Video Untersystem und DAC PS2
03DA Video Statusregister AT&T 6300, Olivetti PC
03D0-03DF CGA, MCGA, VGA Adaptersteuerung
03DE Videomodus Selektorregister AT&T 6300, Olivetti PC
03E8h "Industriestandard" COM3
03F0-03F7 Diskettensteuereinheit PC AT PS2
03F0 Colorado Speicher internes Bandlaufwerk Steuerungsport
03F8-03FF serielle Kommunikationstechnik (COM1) PC AT PS2
06E2-06E3 Datenerfassung (Adapter 1) AT
0790-0793 Cluster (Adapter 1) PC AT
0AE2-0AE3 Datenerfassung (Adapter 2) AT
0B90-0B93 Cluster (Adapter 2) PC AT
0EE2-0EE3 Datenerfassung (Adapter 3) AT
1390-1393 Cluster (Adapter 3) PC AT
22E1 GPIB (Adapter 1)
2390-2393 Cluster (Adapter 4) PC AT
4258 LIM EMS 3.1 (nicht definiert in 3.2+) ----------------
42E1 GPIB (Adapter 2) AT
62E1 GPIB (Adapter 3) AT
8258 LIM EMS 3.1 (nicht definiert in 3.2+) ----------------
82E1 GPIB (Adapter 4) AT
A2E1 GPIB (Adapter 5) AT
C258 LIM EMS 3.1 (nicht definiert in 3.2+) ----------------
C2E1 GPIB (Adapter 6) AT
E2E1 GPIB (Adapter 7) AT
Anmerkung 1) IOSGA= I/O Unterstützung Gate Array
SSGA= Systemunterstützung Gate Array
2) I/O Adressen, Hex 000 bis 0FF, sind für das Systemboard reserviert.
Hex 100 bis 3FF sind verfügbar auf dem I/O Kanal.
3) Diese Adressen werden auf den Adapterkarten eingestellt.
IBM kann alle der nicht aufgeführten Adressen in der Zukunft benutzen.
4) SDLC Kommunikation und sekundäre binäre Synchrone Kommunikationstechnik
kann nicht gemeinsam benutzt werden, weil sich ihre Portadressen
überlappen.
Reservierte Speicherbereiche ......................................... 2**4
┌──────────────────────────────────────────────────────────────────────────────
│ 000-3FF - 1k DOS Interruptvektor-Tabelle, 4 Byte Vektoren für ints 00h-0FFh.
│ 30:00 - benutzt als Stapelbereich während POST und den Urlader Routinen.
│bis 3F:FF Dieser Stapelbereich kann durch ein Anwenderprogramm verschoben werden.
├──────────────────────────────────────────────────────────────────────────────
│ ** der BIOS Datenbereich ** Adressen von 400h bis 4FFh
├─────┬───────┬────────────────────────────────────────────────────────────────
│addr.│ Größe │ Beschreibung
├─────┼───────┼────────────────────────────────────────────────────────────────
│40:00│ Wort │ COM1 Portadresse | diese Adressen sind auf Null gesetzt außerhalb
│40:02│ Wort │ COM2 Portadresse | der OS/2 DOS Kompatibilitätsbox falls irgendeiner
│40:04│ Wort │ COM3 Portadresse | der OS/2 COMxx. SYS Treiber geladen sind.
│40:06│ Wort │ COM4 Portadresse |
│40:08│ Wort │ LPT1 Portadresse
│40:0A│ Wort │ LPT2 Portadresse
│40:0C│ Wort │ LPT3 Portadresse
│40:0E│ Wort │ LPT4 Portadresse (nicht zulässig in PS/2 Maschinen)
│40:0E│ Wort │ PS/2 Zeiger zum erweiterten BIOS Datenbereich (1k) am oberen Ende vom RAM
│40:10│ Wort │ Ausstattungskennzeichen (siehe int 11h)
└─────┴───────┤ Bits:
│ 0 0 kein Diskettenlaufwerk vorhanden
│ 1 falls Diskettenlaufwerk vorhanden (siehe Bits 6&7)
│ 1 0 kein Arithmetikprozessor installiert
│ 1 falls 80x87 installiert (nicht zulässig im PCjr)
│ 2, 3 Speicher auf Systemboard (nicht benutzt beim AT oder PS/2)
│ 0, 0 16k 0, 1 32k
│ 1, 0 48k 1, 1 64k
│ 4, 5 Videomodus beim Systemstart
│ 0, 0 kein Videoadapter
│ 0, 1 40 Spalten Farbe (beim PCjr vorgegeben)
│ 1, 0 80 Spalten Farbe
│ 1, 1 MDA
│ 6, 7 Anzahl Diskettenlaufwerke
│ 0, 0 1 Laufwerk 0, 1 2 Laufwerke
│ 1, 0 3 Laufwerke 1, 1 4 Laufwerke
│ 8 0 DMA vorhanden
│ 1 DMA nicht vorhanden (PCjr, Tandy 1400, Sanyo 55x)
│ 9,A,B Anzahl serieller Anschlüsse RS232
│ C Spieleadapter (Joystick)
│ 0 kein Spieleadapter
│ 1 falls Spieleadapter vorhanden
│ D serieller Drucker (ausschließlich PCjr)
│ 0 kein Drucker
│ 1 serieller Drucker vorhanden
┌──────┘ E, F Anzahl paralleler Drucker die installiert sind
│ Anmerkung 1) der IBM PC und AT speichert die Einstellungen vom Systemboard
└───┐ oder der CMOS RAM Einstellung (als wenn er diese vom BIOS
│ beim Power-On Selbsttest(POST) erhalten hat) an den Adressen 40:10h
│ und 40:13h. 00000001b bedeutet "AN ", 00000000b ist "AUS".
┌─────┬────┴──┐
│40:12│ Byte │ reserviert (PC, AT)
└─────┴───────┤ Anzahl Fehler erkannt bei Verbindung der Infrarottastatur (PCjr)
┌─────┬───────┤ POST Zustand (Convertible)
│40:13│ Wort │ verfügbar Speichergröße in Kbytes (minus Bildspeicher im PCjr)
├─────┼───────┤ dies ist der Wert der beim int 12h zurückgegeben wird
│40:15│ Wort │ reserviert
│40:17│ Byte │ Tastaturkennzeichen Byte 0 (siehe int 9h)
└─────┴───────┤ Bit 7 Einfügemodus an 3 alt gedrückt
│ 6 Capslock an 2 ctrl gedrückt
│ 5 Numlock an 1 linke Umschalttaste gedrückt
┌─────┬───────┤ 4 Scrollock an 0 rechte Umschalttaste gedrückt
│40:18│ Byte │ Tastaturkennzeichen Byte 1 (siehe int 9h)
└─────┴───────┤ Bit 7 Einfügen gedrückt 3 ctrl-numlock(Pause) umgeschaltet
│ 6 Capslock gedrückt 2 PCjr Tastaturklick eingeschaltet
│ 5 Numlock gedrückt 1 PCjr ctrl-alt-capslock gedrückt
┌─────┬───────┤ 4 Scrollock gedrückt 0
│40:19│ Byte │ Speicher für alternative Tastatureingabe (wird normalerweise nicht benutzt)
│40:1A│ Wort │ Zeiger zum Anfang des Tastaturpuffers
│40:1C│ Wort │ Zeiger zum Ende des Tastaturpuffers
│40:1E│32bytes│ 16 2-byte Einträge für kreisförmigen Tastaturpuffer, lesen mit int 16h
│40:3E│ Byte │ Zustand beim positionieren - falls Bit= 0, beim nächsten positionieren
└─────┴───────┤ Laufwerk kalibrieren und auf Spur 0 positionieren.
│ Bit 3 Laufwerk D Bit 2 Laufwerk C
┌─────┬───────┤ 1 Laufwerk B 0 Laufwerk A
│40:3F│ Byte │ Status Diskettenmotor (Bit ist gesetzt um die Bedingung anzuzeigen)
└─────┴───────┤ Bit 7 Schreibzugriff aktiv 3 Motor an (Diskette 3)
│ 6 2 Motor an (Diskette 2)
│ 5 1 B: Motor an (Diskette 1)
┌─────┬───────┤ 4 0 A: Motor an (Diskette 0)
│40:40│ Byte │ Zähler für Motorabschaltung
│ │ │ startet bei 37 und wird bei jedem Systemtakt um 1 vermindert.
│ │ │ Motor wird ausgeschaltet wenn der Zähler = 0 ist.
│40:41│ Byte │ Status der letzten Diskettenoperation:
└─────┴───────┤ Bit 7 Zeitüberschreitung 3 DMA Überlauf
│ 6 Positionierungsfehler 2 Sektor nicht gefunden
│ 5 Fehler des Controllers 1 Adreß-Markierung nicht gefunden
┌─────┬───────┤ 4 CRC Fehler 0 unerlaubte Funktion
│40:42│7 Bytes│ Status NEC Diskettencontroller
│40:49│ Byte │ Videosteuerung Datenbereich 1 von 0040:0049 bis 0040:0066
└─────┴───────┤ aktueller CRT Modus (Hex Wert)
│ 00h 40x25 Schwarz/Weiß (CGA) 01h 40x25 Farbe (CGA)
│ 02h 80x25 Schwarz/Weiß (CGA) 03h 80x25 Farbe (CGA)
│ 04h 320x200 Farbe (CGA) 05h 320x200 Schwarz/Weiß (CGA)
│ 06h 640x200 Schwarz/Weiß (CGA) 07h Monochrom (MDA)
│ erweiterte Videomodi (EGA/MCGA/VGA oder andere)
│ 08h niedr. Auflösung, 16 Farben 09h mittl. Auflösung,16 Farben
│ 0Ah hohe Auflösung, 4 Farbe 0Bh nicht benutzt
│ 0Ch mittl. Auflösung, 16 Farben 0Dh hohe Auflösung, 16 Farben
┌─────┬───────┤ 0Eh hohe Auflösung, 4 Farben 0Fh hohe Auflösung, 64 Farben
│40:4A│ Wort │ Anzahl Spalten auf Bildschirm, Wert ist hexadezimal
└─────┴───────┤ 20 Spalten= 14h (Videomodus 8, niedrige Aufl. 160x200 CGA Grafik)
│ 40 Spalten= 28h
┌─────┬───────┤ 80 Spalten= 46h
│40:4C│ Wort │ Länge Bildschirmpuffer in Bytes
├─────┼───────┤ (Anzahl benutzter Bytes pro Bildschirmseite, variiert mit Videomodus)
│40:4E│ Wort │ Offsetadresse Bildschirmpuffer (aktive Seite)
│40:50│8 Worte│ Cursorposition der Seiten 1-8
└─────┴───────┤ das erste Byte eines Wortes enthält die Spalte (0-19, 39, oder 79)
┌─────┬───────┤ der zweite Byte enthält die Zeile( 0-24)
│40:60│ Byte │ Endzeile des Cursors (normalerweise 1)
│40:61│ Byte │ Startzeile des Cursors (normalerweise 0)
│40:62│ Byte │ aktuelle Bildschirmseite (0-7)
│40:63│ Wort │ Portadresse von der 6845 CRT Steuereinheit oder gleichwertige
├─────┼───────┤ 3B4h= Monochrom aktiv, 3D4h= Farbe aktiv
│40:65│ Byte │ aktuelle Einstellung vom CRT Modusregister
│40:66│ Byte │ aktuelle Farbpalette (CGA)
│40:67│5 Bytes│ temporärer Speicher für SS:SP während des Abschaltens (Kassettenschnittstelle)
│40:6C│ Wort │ Zeitzähler niederwertiges Wort
│40:6E│ Wort │ Zeitzähler höherwertiges Wort
│40:69│ Byte │ HD_INSTALL (Columbia PCs) (nicht zulässig bei den meisten Nachbauten)
└─────┴───────┤ Bit 0 0 externe 8 Zoll Diskettenlaufwerke
│ 1 externe 5-1/4 Zoll Diskettenlaufwerke
│ 1, 2 höchste Laufwerksadresse welche für int 13 gültig ist
│ (wenn Diskettenlaufwerke von 0-3 zugewiesen sind, subtrahiere
│ 3 um die Anzahl der installierten Festplatten zu bekommen)
│ 4, 5 Anzahl Festplatten an der zusätzlichen Steuereinheit
│ 6, 7 Anzahl Festplatten an der Steuereinheit auf Systemplatine
│ (falls Bit 6 oder 7= 1, kein Laufwerk A vorhanden und
┌─────┬───────┤ die maximale Anzahl Diskettenlaufwerke von int 11 ist 3)
│40:70│ Byte │ Zeit-Zähler 24 Stunden Überschreitung, 1 falls 24 Stunden überschritten
├─────┼───────┤ sind und wird auf Null gesetzt, sobald die Zeit über int 1Ah angefordert wird.
│40:71│ Byte │ BIOS Unterbrechnungskennzeichen (Bit 7=1 wenn CTRL-C oder CTL-BREAK gedrückt wurde)
│40:72│ Wort │ Reset Kennzeichen
└─────┴───────┤ PCjr enthält hier 1234h hier für Warmstart sobald eine Kassette installiert ist
│ Bits 1234h= Warmstart, Speichertest wird übergangen
│ 4321h= Speicherinhalt nicht löschen (PS/2 ausschließlich)
│ 5678h= System suspendiert (Convertible)
│ 9ABCh= Hersteller Testmodus (Convertible)
┌─────┬───────┤ ABCDh= System POST soll durchgeführt werden (Convertible)
│40:74│ Byte │ Status der letzten Festplattenoperation; PCjr spezielle Festplattensteuerung
│40:75│ Byte │ # angeschlossener Festplatten (0-2) ; PCjr spezielle Festplattensteuerung
│40:76│ Byte │ HD Kontrollbyte; temporärer Sicherungsbereich für den 6. Eintrag der Parametertabelle
│40:77│ Byte │ Port Offset zum aktuellen HD-Adapter ; PCjr spezielle Festplattensteuerung
│40:78│4 Bytes│ Wert der Zeitüberschreitung für LPT1, LPT2, LPT3, LPT4
│40:7C│4 Bytes│ Wert der Zeitüberschreitung für COM1, COM2, COM3, COM4 (0-0FFh sec., vorgegeben 1)
│40:80│ Wort │ Zeiger zum Anfang des kreisförmigen Tastaturpuffers, vorgegeben 03:1E
│40:82│ Wort │ Zeiger zum Ende des kreisförmigen Tastaturpuffers, vorgegeben 03:3E
└─────┴───────┤ Anmerkung: bei den ersten ZENITH Z183 BIOS wurde hier Null ein-
┌─────┬───────┤ getragen und nicht berücksichtigt.
│40:84│ .... │ Videosteuerung Datenbereich 2, von 0040:0084 bis 0040:008A
│40:84│ Byte │ Zeilen auf dem Bildschirm minus 1 (ausschließlich EGA)
│40:84│ Byte │ PCjr Interrupt Kennzeichen; Zeit-Zähler Kanal 0 (wird von POST benutzt)
│40:85│ Wort │ Bytes pro Zeichen (ausschließlich EGA)
│40:85│2 Bytes│ (ausschließlich PCjr) Wiederholungsrate für Zeichen
│40:86│2 Bytes│ (ausschließlich PCjr) Verzögerungsfaktor
│40:87│ Byte │ Statusinformationen (ausschließlich EGA)
└─────┴───────┤ Bit 0 0 Cursor-Emulation ist eingeschaltet
│ 1 Cursor-Emulation ist ausgeschaltet
│ 1 0 EGA mit Farbmonitor
│ 1 EGA Monochrom-Monitor
│ 2 0 auf vertikalen Strahlrücklauf warten (CGA eingeschaltet)
│ 1 nicht auf vertikalen Strahlrücklauf warten (EGA oder MDA eingeschaltet)
│ 3 0 EGA ist der aktive Adapter.
│ 1 EGA ist nicht der aktive Adapter.
│ 4 reserviert
│ 5,6 EGA Speichergröße
│ 0,0 64k
│ 0,1 128k
│ 1,0 192k
│ 1,1 256k
│ 7 0 beim Moduswechsel den Bildschirm nicht löschen
│ 1 falls beim letzten Moduswechsel angegeben war,
│ das der Bildschirmpuffer nicht gelöscht werden soll.
│ Moduskombinationen:
│ bit3 bit1 Bedeutung
│ 0 0 EGA mit Farbmonitor ist aktiv
│ 0 1 EGA mit Monochrom-Monitor ist aktiv
│ 1 0 EGA ist nicht aktiv, Monochrom-Adapter ist aktiv
┌─────┬───────┤ 1 1 EGA ist nicht aktiv, CGA ist aktiv
│40:87│ Byte │ (ausschließlich PCjr) aktueller Fn Tastencode
├─────┼───────┤ 80h Bit zeigt Tastencode beim drücken/loslassen an ?
│40:88│ Byte │ Kennzeichenbits und Schalter (ausschließlich EGA) 0=AN, 1=AUS
└─────┴───────┤ Bit 0 Schalter 1
│ 1 Schalter 2
│ 2 Schalter 3
│ 3 Schalter 4
┌─────┬───────┤ 4-7 Kennzeichenbits
│40:88│ Byte │ (ausschließlich PCjr) spezielles Byte für Tastaturzustand
└─────┴───────┤ Bit 7 Funktionskennzeichen 3 Wiederholfunktion (0=aktiv, 1=ausgeschaltet)
│ 6 Fn-B losgelassen 2 Geschwindigkeit Wiederholung (0=langsam, 1=schnell)
│ 5 Fn gedrückt 1 extra Verzögerung vor Wiederholung (0=aktiv)
┌─────┬───────┤ 4 Fn sperren 0 Zeichen schreiben, Verzögerung zu Ende
│40:89│ Byte │ (PCjr) aktueller Wert vom 6845 reg 2 (horizontale Synchronisation) von
└─────┴───────┤ ctrl-alt-cursor Routine zum Bildschirm positionieren im ROM benutzt
│ (VGA)
│ Bit 0 reserviert
│ 1 Video Summing ist eingeschaltet
│ 2 0 Farbbildschirm ist angeschlossen
│ 1 Monochrom-Monitor ist angeschlossen
│ 3 0 vorgegebene Palette wird geladen
│ 4 0 8x8 Text Schrifttyp
│ 1 8x16 Text Schrifttyp
┌─────┬───────┤ 5-7 reserviert
│40:8A│ Byte │ (PCjr) CRT/CPU Seitenregister Abbildung, vorgegeben 3Fh
└─────┴───────┤ (VGA) Anzeige Monitor-Kombination. Dies ist der Wert der über
│ die Funktion 1Ah vom Video BIOS gesetzt/gelesen wird. Dieses Byte
│ enthält einen Index auf die Tabelle der Monitor-Kombinationen
│ ROM BIOS, welche die gültigen Kombinationen für ein oder
│ zwei Video Untersysteme enthält. Video Untersysteme
│ sind durch die folgenden Werte gekennzeichnet:
│ 00h kein Monitor
│ 01h MDA mit Monochrom-Monitor
│ 02h CGA mit Farbmonitor
│ 03h reserviert
│ 04h EGA mit Farbmonitor
│ 05h EGA mit Monochrom-Monitor
│ 06h Professional Grafikmonitor
│ 07h VGA mit analogem Monochrom-Monitor
│ 08h VGA mit analogem Farbmonitor
│ 09h reserviert
│ 0Ah MCGA mit digitalem Farbmonitor
│ 0Bh MCGA mit analogem Monochrom-Monitor
│ 0Ch MCGA mit analogem Farbmonitor
┌─────┬───────┤ 0FFh unbekanntes Video Untersystem
│40:8B│ Byte │ letzte Datenübertragungsrate des Diskettenlaufwerks
└─────┴───────┤ Bit 7,6 Datenübertragungsrate beim Systemstart
│ 0,0 500 kb/Sek
│ 0,1 300 kb/Sek
│ 1,0 250 kb/Sek
│ 1,1 reserviert
│ 5,4 letzte ausgewählte Steprate
│ 3 letzte Datenübertragungsrate die benutzt wurde
│ 2 reserviert
│ 1 reserviert
│ 0 1 kombinierten Disketten/Festplattencontroller erkannt
│ 0 XT nur Diskettencontroller (für 360kb Laufwerke) erkannt
│ Datenübertragungsraten
│ Kbits/Sek Medium Laufwerk Sektoren/Spur
│ 250 360k 360k 9
│ 300 360k 1.2M 9
│ 500 1.2M 1.2M 15
│ 250 720k 720k 9
│ 250 720k 1.4M 9
┌─────┬───────┤ 500 1.4M 1.4M 18
│40:8C│ Byte │ Status der letzten Festplattenoperation
│40:8D│ Byte │ Fehler der letzten Festplattenoperation
│40:8E│ Byte │ Festplatten Interrupt (Bit 7= Interrupt aktiv)
│40:8 │ Byte │ combo_card - Status von Laufwerk 0 und 1
└─────┴───────┤ Bit 7 reserviert
│ 6 Laufwerkstyp für Laufwerk 1 erkannt
│ 5 Laufwerk kann mehrfach Daten einstufen, Leistungsfähigkeit für Laufwerk 1
│ 0 keine mehrfache Datenrate
│ 1 hat mehrfache Datenrate
│ 4 1 Laufwerk 1 hat 80 Spuren
│ 0 Laufwerk 1 hat 40 Spuren
│ 3 reserviert
│ 2 Laufwerkstyp für Laufwerk 0 erkannt
│ 1 Laufwerk mehrfach Daten einstufen Leistungsfähigkeit für Laufwerk 0
│ 0 keine mehrfache Datenrate
│ 1 hat mehrfache Datenrate
│ 0 1 Laufwerk 0 hat 80 Spuren
┌─────┬───────┤ 0 Laufwerk 0 hat 40 Spuren
│40:90│4 Bytes│ festgelegtes Medium Laufwerk 0, 1, 2, 3
└─────┴───────┤ Floppy_Medium_Festlegung
│ Bit 7,6 Datenübertragungsrate
│ 00 - 500 K/Sek
│ 01 - 300 K/Sek
│ 10 - 250 K/Sek
│ 11 - reserviert
│ 5 doppelte Schrittzeit verlangt
│ 4 Medium/Laufwerk erkannt
│ 3 reserviert
│ 2-0 gegenwärtige Festlegung
│ 000 360k in 360k unbestehend
│ 001 360k in 1.2M unbestehend
│ 010 1.2M in 1.2M unbestehend
│ 011 360k in 360k bestehend
│ 100 360k in 1.2M bestehend
│ 101 1.2M in 1.2M bestehend
│ 110 reserviert
┌─────┬───────┤ 111 keine von den aufgeführten
│40:94│2 Bytes│ aktuelle gesuchte Spur im Laufwerk 0, 1
│40:96│ Byte │ Tastaturkennzeichen Byte 3 (siehe int 9h)
│40:97│ Byte │ Tastaturkennzeichen Byte 2 (siehe int 9h)
│40:98│ dwort │ Segment:Offset Zeiger zum Benutzerkennzeichen Warten
│40:9C│ dwort │ Zeitüberschreitung in Mikrosekunden des Benutzers
│40:A0│ Byte │ Echtzeituhr Funktion Warten in Betrieb
└─────┴───────┤ Bits 7 Wartezeit läuft und hängt auf dem Kennzeichen
│ 6-1 reserviert
┌─────┬───────┤ 0 int 15h, Funktion 86h (Warten) Zeit ist verstrichen
│40:A1│ Byte │ LAN A DMA Kanal Flags
│40:A2│2 Bytes│ Status LAN A 0, 1
│40:A4│ dwort │ gesicherter Festplatten Interrupt Vektor
│40:A8│ dwort │ SAVE_PTR: EGA Zeiger zur Tabelle mit 7 Parameter in Segment:
└─────┴───────┤ Offset Format. Aufbau der Tabelle:
│ D_1 dwort Zeiger zu einer 1472 Byte großen Tabelle die 64 Video
│ Parameter enthält
│ D_2 dwort reserviert
│ D_3 dwort reserviert
│ D_4 dwort reserviert
│ D_5 dwort reserviert für zukünftige Benutzung
│ D_6 dwort reserviert für zukünftige Benutzung
┌─────┬───────┤ D_7 dwort reserviert für zukünftige Benutzung
│40:B0│2Wörter│ internationale Unterstützung (Tandy 1000 TX)
│40:B4│ Byte │ Tastatur NMI Kontrollkennzeichen (Convertible)
│40:B4│ Byte │ Monochrom-Monitor Schaltung erkannt (Tandy 1000 TX)
│ │ │ 00h nicht vorhanden 0FFh vorhanden
│40:B5│ dwort │ Kennzeichen Tastaturabschaltung unerledigt (Convertible)
│40:B5│ Byte │ erweiterte Ausstattung feststellen (5 Bits) (Tandy 1000 TX)
└─────┴───────┤ Bit 0 = 0 Laufwerk ein ist 5 ¼
│ 1 Laufwerk ein ist 3 ½
│ 1 = 0 Laufwerk ein ist 5 ¼
│ 1 Laufwerk ein ist 3 ½
│ 2 = 0 Tandy 1000 Tastatur Ausstattung
│ 1 IBM Tastatur Ausstattung
│ 3 = 0 CPU langsamer Modus
│ 1 CPU schnell Modus
│ 4 = 0 intern Video Farbe wird unterstützt
│ 1 intern Video Farbe wird nicht unterstützt, externes
│ Video eingeschaltet (umgeschaltet von der Hauptplatine
│ zur Erweiterungskarte)
│ 5 = 0 kein externes Monochrom Video installiert
┌─────┬───────┤ 1 externes Monochrom Video ist installiert
│40:B6│ Byte │ erweiterte Ausstattung feststellen (1 Bit) (Tandy 1000 TX)
└─────┴───────┤ Bit 0 = 0 Laufwerk C ist 5 ¼
┌─────┬───────┤ 1 Laufwerk C ist 3 ½
│40:B9│ Byte │ Port 60 Warteschlange für einzelne Bytes (Convertible)
│40:BA│ Byte │ Auswahlcode der letzten Taste (Convertible)
│40:BB│ Byte │ Zeiger zum NMI Pufferanfang (Convertible)
│40:BC│ Byte │ Zeiger zum NMI Pufferende (Convertible)
│40:BD│16bytes│ NMI Puffer Auswahlcode (Convertible)
│40:CE│ Wort │ Tageszähler (Convertible und spätere)
│ bis │ -04:8F│ Ende vom BIOS Datenbereich
├─────┴───────┴────────────────────────────────────────────────────────────────
│ ** Ende vom BIOS Datenbereich **
├─────┬───────┬────────────────────────────────────────────────────────────────
│40:90│ -40:EF│ von IBM reserviert
│40:F0│16bytes│ Inter-Application Kommunikationsbereich (wird von Anwendungen
│40:FF│ │ benutzt, um Daten oder Parameter zu übergeben)
└─────┴───────┤ 1) benutzt von Turbo Power's FMARK (markieren Speicher für TSRs).
│ 2) benutzt von Norton Utilities' TimeMark um die Zeit zu speichern.
│ 3) benutzt von BRIEF Editor.
┌─────┬───────┤
│50:00│ Byte │ Statuskennzeichen DOS PRINT-SCREEN
└─────┴───────┤ 00h nicht aktiv oder erfolgreich beendet
│ 01h Bildschirmausdruck ist aktiv
┌─────┬───────┤ 0FFh Fehler während des Druckens aufgetreten
│50:01│ │ benutzt von BASIC
│50:02-03 │ PCjr POST und Diagnose Arbeitsbereich
│50:04│ Byte │ Statusbyte wenn nur ein Laufwerk da ist - nicht benutzt von AT&T DOS 2.11!
└─────┴───────┤ 00 logisches Laufwerk A war zuletzt in Betrieb
┌─────────────┤ 01 logisches Laufwerk B war zuletzt in Betrieb
│50:05-0E │ PCjr POST und Diagnose Arbeitsbereich
│50:0F│ │ BASIC: Kennzeichen Befehlsinterpreter (ist 02h falls ein aktueller Befehlsinterpreter da ist)
│50:10│ Wort │ BASIC: Speicher Segmentadresse (eingestellt mit DEF SEG)
│50:12│4 Bytes│ BASIC: Segment:Offset int 1Ch Taktgeber Interrupt Vektor
│50:16│4 Bytes│ BASIC: Segment:Offset int 23h ctrl-break Interrupt
│50:1A│4 Bytes│ BASIC: Segment:Offset int 24h Kritischer Fehler int Vektor
│50:1B-1F │ benutzt von BASIC zur dynamischen Speicherung
│50:20-21 │ benutzt von DOS zur dynamischen Speicherung
│50:22-2C │ benutzt von DOS als Diskettenparametertabelle. Siehe int 1Eh für Werte.
└─────┴───────┤ In DOS 1.0 ist diese im ROM BIOS abgelegt, aber in DOS 1.1 und späteren
│ Versionen ist diese ein Teil von DOS ab Adresse 50:22. Das erste Byte
│ (von den elf) von den Festplattenparametern enthält den hexadezimalen
│ Wert CF in DOS 1.0 und DF in DOS 1.1 und später Versionen.
│ DOS 1.0 24ms
┌─────────────┤ DOS 1. 1 26ms
│50:30-33 │ benutzt von MODE Befehl
│50:81│ │ Anzahl Diskettenlaufwerke im System installiert ?
│50:82│ │ erstes Festplattenlaufwerk?
│50:83│ │ letztes Festplattenlaufwerk?
│50:34-FF │ Unbekannt - reserviert für DOS
└─────────────┴─────────────────────────────────────────────────────────────────
An absoluten Adressen:
0008:0047 IO.SYS oder IBMBIO.COM IRET Anweisung. Dies ist eine Dummy Routine der
Interrupts 01h, 03h, und 0Fh die währende dem POST initialisiert werden.
C000:001E EGA BIOS Kennung (die Buchstaben IBM)
F000:FA6E Tabelle der Zeichen 00h-7Fh die vom int 10h Video BIOS benutzt werden.
Die ersten 128 Zeichen sind hier gespeichert und jedes benötigt 8 Bytes.
Die höheren Zeichen sind irgendwo auf dem Videoadapter.
F000:FFF5 BIOS Freigabe Datum
F000:FFFE PC Modellidentifizierung
┌─────────────────────────────────────────────────────────────────────┐
│ ROM BIOS ┌ Modell Byte │
│ Freigabe- │ ┌ Untermodell Byte Maschine │
│ Datum │ │ ┌ Revision │
├──────────┼────┼────┼────┼───────────────────────────────────────────┤
│ │ 00 │ 00 │ 00 │ AT&T 6300, Olivetti PC │
│ 09/02/86 │ FA │ 00 │ 00 │ PS/2 Modell 30 │
│ 01/10/86 │ FB │ 00 │ 01 │ XT │
│ 01/10/86 │ FB │ 00 │ 00 │ XT-2 (die ersten) (640k Systemplatine │
│ 05/09/86 │ FB │ 01 │ │ XT-2 (revidiert) (640k Systemplatine) │
│ 01/10/84 │ FC │ -- │ -- │ AT │
│ 06/10/85 │ FC │ 00 │ 01 │ AT Modell 239 6mHz (6.6 max governor) │
│ 11/15/85 │ FC │ 01 │ 00 │ AT Modell 319, 339 8mHz (8.6 max governor)│
│ │ FC │ 01 │ 00 │ Compaq 386/16 │
│ │ FC │ 01 │ 03 │ einige Phoenix 386 BIOS │
│ │ FC │ 01 │ 81 │ einige Phoenix 386 BIOS │
│ 04/21/86 │ FC │ 02 │ 00 │ XT/286 │
│ 02/13/87 │ FC │ 04 │ 00 │ PS/2 Modell 50 │
│ 02/13/87 │ FC │ 05 │ 00 │ PS/2 Modell 60 │
│ │ FC │ 00 │ │ 7531/2 Industrie AT │
│ │ FC │ 06 │ │ 7552 "Gearbox" │
│ 06/01/83 │ FD │ -- │ -- │ PCjr │
│ 11/08/82 │ FE │ -- │ -- │ XT, tragbarer PC, XT/370, 3270PC │
│ 04/24/81 │ FF │ -- │ -- │ PC-0 (16k Systemplatine) │
│ 10/19/81 │ FF │ -- │ -- │ PC-1 (64k Systemplatine) │
│ 08/16/82 │ FF │ -- │ -- │ PC, XT, XT/370 (256k Systemplatine) │
│ 10/27/82 │ FF │ -- │ -- │ PC, XT, XT/370 (256k Systemplatine) │
│ 1987 │ F8 │ 00 │ 00 │ PS/2 Modell 80 │
│ 1987 │ F8 │ 01 │ 00 │ PS/2 Modell 80 20mHz │
│ 09/13/85 │ F9 │ 00 │ 00 │ Convertible │
│ │ 2D │ -- │ -- │ Compaq PC (4.77mHz Original) │
│ │ 9A │ -- │ -- │ Compaq Plus (XT kompatibel) │
└──────────┴────┴────┴────┴───────────────────────────────────────────┘
Die IBM PC System Interrupts (Übersicht) ............................. 2**5
Die Interrupt Tabelle ist an der niedrigsten Stelle im Speicher gespeichert, beginnend
bei 0000:0000h. Der Adressen sind Offsets vom Segment 0, z.B. Stelle 0000h hat
die Adresse für int 0, etc. Die Tabelle ist 1024 Bytes lang und enthält 256
vier Byte Vektoren von 00h zu 0FFh. Jede Addresse in Speicher kann gefunden
werden, indem die Interrupt Nummer mit 4 multipliziert wird. Als Beispiel, int 7
(7x4=28) oder 1Bh (0000:001Bh) ergibt die Adresse.
Diese Interrupt Vektoren zeigen normalerweise auf ROM Tabellen oder werden von DOS übernommen,
sobald eine Anwendung ausführt wird. Einige Anwendungen biegen diese Interrupts auf
ihr eigenen Code um, um die Systemfunktionen anzuändern. DOS bietet über int 21h
Funktion 25h die Möglichkeit die Interrupts umzuleiten; Das direkte abändern der
Interruptvektor-Tabelle wird nicht empfohlen, auch nicht um diese irgendwohin
zu holen.
┌─────────────────────┬────────────────────────────────────────────────────────┐
│ Interrupt Adresse │ │
├───────┬───────┬─────┘ Funktion │
│Nummer │ (Hex) │ Type │
├───────┼───────┼─────┬────────────────────────────────────────────────────────┤
│ 0 │ 00-03 │ CPU │ Division durch Null │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 1 │ 04-07 │ CPU │ Einzelschritt │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 2 │ 08-0B │ CPU │ Nicht maskierbarer Interrupt │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 3 │ 0C-0F │ CPU │ Programmunterbrechung │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 4 │ 10-13 │ CPU │ Überlauf │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 5 │ 14-17 │ BIOS│ drucken Bildschirm │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 6 │ 18-1B │ hdw │ reserviert │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 7 │ 1C-1F │ hdw │ reserviert │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 8 │ 20-23 │ hdw │ Datum und Zeit │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 9 │ 24-27 │ hdw │ Tastatur │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ A │ 28-2B │ hdw │ reserviert │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ B │ 2C-2F │ hdw │ Kommunikation (8259) │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ C │ 30-33 │ hdw │ Kommunikation │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ D │ 34-37 │ hdw │ Festplatte │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ E │ 38-3B │ hdw │ Diskette │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ F │ 3C-3F │ hdw │ Drucker │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 10 │ 40-43 │ BIOS│ Video │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 11 │ 44-47 │ BIOS│ Ausstattungskontrolle │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 12 │ 48-4B │ BIOS│ Speicher │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 13 │ 4C-4F │ BIOS│ Diskette/Festplatte │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 14 │ 50-53 │ BIOS│ serielle Kommunikation │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 15 │ 54-57 │ BIOS│ Kassette, Systemverwaltung │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 16 │ 58-5B │ BIOS│ Tastatur │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 17 │ 5C-5F │ BIOS│ Paralleler Drucker │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 18 │ 60-63 │ BIOS│ ROM BASIC │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 19 │ 64-67 │ BIOS│ Systemstart │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 1A │ 68-6B │ BIOS│ Datum und Zeit │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 1B │ 6C-6F │ BIOS│ Tastaturunterbrechung │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 1C │ 70-73 │ BIOS│ Zeit-Zähler Takteinheit │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 1D │ 74-77 │ BIOS│ Video Initialisierung │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 1E │ 78-7B │ BIOS│ Diskettenparameter │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 1F │ 7C-7F │ BIOS│ Video Grafikzeichen, zweiter Teil │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 20 │ 80-83 │ DOS │ allgemein Programmbeendigung │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 21 │ 84-87 │ DOS │ DOS Service Funktionsanforderungen │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 22 │ 88-8B │ DOS │ Adresse Programmbeendigung │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 23 │ 8C-8F │ DOS │ Adresse Programmabbruch │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 24 │ 90-93 │ DOS │ Kritischer Fehler Routine │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 25 │ 94-97 │ DOS │ Absolutes Lesen │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 26 │ 98-9B │ DOS │ Absolutes Schreiben │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 27 │ 9C-9F │ DOS │ beenden und verbleiben speicherresistent │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 28-3F │ A0-FF │ DOS │ reserviert für DOS │
└───────┴───────┴─────┼────────────────────────────────────────────────────────┤
│ *29h schnelle Bildschirmausgabe │
│ *2Ah Microsoft Netzwerke - Sitzungsebene Interrupt │
│ 2Fh mehrfach Interrupt │
│ *30h FAR JUMP Instruktion für CP/M-artige Aufrufe │
│ 33h benutzt vom Microsoft Maustreiber │
┌───────┬───────┬─────┼────────────────────────────────────────────────────────┤
│ 40-43 │100-115│ BIOS│ reserviert für BIOS │
└───────┴───────┴─────┼────────────────────────────────────────────────────────┤
│ 40h Festplatten BIOS │
│ 41h Festplattenparameter (außer PC1) │
│ 42h Zeiger zum Bildschirm BIOS (EGA, VGA, PS/2) │
│ 43h Zeiger zu EGA Initialisierung Parametertabelle │
┌───────┬───────┬─────┼────────────────────────────────────────────────────────┤
│ 44 │116-119│ BIOS│ ersten 128 Grafikzeichen │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 45-47 │120-131│ BIOS│ reserviert für BIOS │
└───────┴───────┴─────┼────────────────────────────────────────────────────────┤
│ 45h reserviert von IBM (nicht initialisiert) │
│ 46h Zeiger zu Festplattenparameter 2 (AT, PS/2) │
│ 47h reserviert von IBM (nicht initialisiert) │
┌───────┬───────┬─────┼────────────────────────────────────────────────────────┤
│ 48 │132-135│ BIOS│ PCjr Kabellose Tastatur Übertragung │
├───────┼───────┼─────┼────────────────────────────────────────────────────────┤
│ 49 │136-139│ BIOS│ PCjr Non-Keyboard Scancode Übersetzungstabelle │
└───────┴───────┴─────┼────────────────────────────────────────────────────────┤
│ 4Ah Echtzeituhr Alarm (Convertible, PS/2) │
┌───────┬───────┬─────┼────────────────────────────────────────────────────────┤
│ 50-5F │140-17F│ BIOS│ reserviert für BIOS │
└───────┴───────┴─────┼────────────────────────────────────────────────────────┤
│ 5Ah Cluster Adapter BIOS Adresse Einsprungstelle │
│ *5Bh IBM (Cluster Adapter?) │
│ 5Ch NETBIOS Schnittstelle │
┌───────┬───────┬─────┴────────────────────────────────────────────────────────┤
│ 60-67 │180-19F│ allgemein verfügbar für Anwenderprogramme │
└───────┴───────┴─────┬────────────────────────────────────────────────────────┤
│ 60h 10-Net Netzwerk │
│ 67h benutzt von LIM & AQA EMS, EEMS │
┌───────┬───────┬─────┴────────────────────────────────────────────────────────┤
│ 68-7F │1A0-1FF│ reserviert von IBM │
└───────┴───────┴─────┬────────────────────────────────────────────────────────┤
│ 6Ch System Resume Vektor (Convertible) │
│ 6Fh einige Novell und 10-Net API Funktionen │
│ 70h IRQ 8, Echtzeituhr Taktgeber Interrupt (AT, PS/2) │
│ 71h IRQ 9, LAN Adapter 1 │
│ 72h IRQ 10 (AT, XT/286, PS/2) reserviert │
│ 73h IRQ 11 (AT, XT/286, PS/2) reserviert │
│ 74h IRQ 12 Maus Interrupt (PS/2) │
│ 75h IRQ 13, Koprozessorfehler │
│ 76h IRQ 14, Steuereinheit Festplatte (AT, PS/2) │
│ 77h IRQ 15 (AT, XT/286, PS/2) reserviert │
│ 7Ch IBM REXX88PC Kommandosprache │
┌───────┬───────┬─────┴────────────────────────────────────────────────────────┤
│ 80-85 │200-217│ ROM BASIC │
├───────┼───────┼──────────────────────────────────────────────────────────────┤
│ 86-F0 │218-3C3│ benutzt vom BASIC Interpreter sobald BASIC läuft │
├───────┼───────┼──────────────────────────────────────────────────────────────┤
│ F1-FF │3C4-3FF│ reserviert von IBM │
└───────┴───────┴──────┬───────────────────────────────────────────────────────┤
│ *0F8h Einstellen Befehlsinterpreter Interrupt (OEM) │
│ *0F9h OEM Befehlsinterpreter Service Codes │
└───────────────────────────────────────────────────────┘
Die IBM-PC System Interrupts (ausführlich) ........................... 2**6
┌─────────────────────────────────────────────────────────────────────────────┐
│ Interrupt 00h Division durch Null │
└─────────────────────────────────────────────────────────────────────────────┘
(0:0000h) (Prozessor Fehler). Wird automatisch am Ende einer DIV oder IDIV An-
weisung aufgerufen, wenn das Ergebniss fehlerhaft ist. Normalerweise
von DOS so eingestellt, das eine Fehlermeldung angezeigt und das
Programm beendet wird.
Anmerkung: auf dem 8086/8088, zeigt die Rückkehradresse auf die folgende Instruktion,
auf dem 80286/80386, zeigt diese auf die Divisionanweisung.
┌─────────────────────────────────────────────────────────────────────────────┐
│ Interrupt 01h Einzelschritt │
└─────────────────────────────────────────────────────────────────────────────┘
(0:0004h) Wird nach jeder Instruktion aufgerufen, sobald die CPU ein Kennzeichen
für Einzelschritt Modus erkennt (Bit 8 von Flags ist 1). Dies ist das was
der "T" Befehl von DEBUG macht. Wird nicht erzeugt nach einem MOV
zu Segmentregister oder POP von Segmentregister. (falls kein älterer
8088 mit einem Fehler im Microcode benutzt wird).
┌─────────────────────────────────────────────────────────────────────────────┐
│ Interrupt 02h Nicht maskierbarer Interrupt │
└─────────────────────────────────────────────────────────────────────────────┘
(0:0008h) Vektor wird nicht über CLI ausgeschaltet. Wird erzeugt vom NMI Signal
der Hardware. Dies Funktion wird aufgerufen, wenn ein Paritätsfehler
im Speicher oder andere Ereignisse die auf Hardware Probleme oder Fehler
hinweisen. Dies ist im wesentlichen von der verwendeten Hardware ab-
hängig. Zeigt die geeignete Fehlermeldung und hält den Prozessor an.
Einige AT Chips benutzen int 02h scheinbar um I/O Fehler als auch
Paritätsfehler anzuzeigen.
Dies Signal wird verschiedenartig benutzt:
POST Paritätsfehler: alle außer PCjr und Convertible
80x87 Koprozessor Interrupt: alle außer PCjr und Convertible
Tastatur Interrupt: PCjr, Convertible
I/O Kanal Überprüfung: Convertible, PS/2 50+
Festplattencontroller power-on Anforderung: Convertible
Systemunterbrechung: Convertible
Echtzeituhr: Convertible
System Watchdog Zeit-Zähler: PS/2 50+
Zeitüberschreitung Interrupt: PS/2 50+
DMA Zeit-Zähler Zeitüberschreitung Int.: PS/2 50+
Infrarottastatur Verbindung: PCjr
┌─────────────────────────────────────────────────────────────────────────────┐
│ Interrupt 03h Programmunterbrechung │
└─────────────────────────────────────────────────────────────────────────────┘
(0:000Ch) Wird aufgerufen sobald die CPU ein 1-byte int 3 (0CCh) ausführt. Ähnlich der 8080
(Intern) RST Instruktion. Wird im allgemeinen benutzt, um Programmstops zum Testen zu setzen.
Anmerkung 1) Wird auch von den Turbo PASCAL Versionen 1, 2, 3 benutzt, sobald {$ U+} spezifiziert ist.
2) Int 3s werden manchmal vom Microsoft Linker als Antwort auf unaufgelöste
Symbole eingefügt.
┌─────────────────────────────────────────────────────────────────────────────┐
│ Interrupt 04h Divisionsüberlauf │
└─────────────────────────────────────────────────────────────────────────────┘
(0:0010h) Erzeugt von einer INTO Instruktion falls OF Kennzeichen gesetzt ist.
Falls nicht
(Intern) INTO ist effektiv ein NOP. Benutzt um arithmetische Fehler schneller
aufzufangen, sobald ein Programm bereit ist diese zu verarbeiten, als
unmittelbar nach auftreten eines Überlaufs.
┌─────────────────────────────────────────────────────────────────────────────┐
│ Interrupt 05h drucken Bildschirm │
└─────────────────────────────────────────────────────────────────────────────┘
(0:0014h) Service Drucken Bildschirm auf den Drucker. Aufgerufen von int 9 wenn
Shift + Taste 55 (PrtSc) gedrückt wurde. Automatisch aufgerufen sobald
dir PrtSc Taste gedrückt ist. Normalerweise wird eine Routine zu drucken
des Bildschirm aufgerufen, kann aber auch eine beliebige Routine inner-
halb des Tastaturtreibers sein. Status und Ergebnis der Routine werden
an der Adresse 0050:0000 gespeichert.
(Intern) BOUND Kontrolle scheiterte (80286+)
erzeugt von der BOUND Instruktion sobald der Wert der geprüft wurde kleiner
als der niedrigste oder größer als der größte BOUND Wert ist.
Aufruf AH 05h
Rückgabe absolute Adresse 50:0
00h nicht aktiv oder erfolgreich beendet
01h Bildschirmausdruck ist aktiv
0FFh Fehler während des Drucken aufgetreten
Anmerkung 1) benutzt BIOS Aufrufe um den Bildschirm zu lesen.
2) Ausgabe erfolgt über LPT1.
3) umgeleitet in GRAPHICS.COM falls GRAPHICS.COM geladen ist.
4) beim Tandy 1000TX kann dieser Interrupt über DIP Schalter
eingeschaltet oder ausgeschaltet werden.
┌─────────────────────────────────────────────────────────────────────────────┐
│ Interrupt 06h reserviert von IBM │
└─────────────────────────────────────────────────────────────────────────────┘
(0:0018h)
auf dem Tandy 1000TX kann dieser Interrupt über DIP Schalter
eingeschaltet oder ausgeschaltet werden.
(Intern) ungültiger Opcode( 80286+)
┌─────────────────────────────────────────────────────────────────────────────┐
│ Interrupt 07h reserviert von IBM │
└─────────────────────────────────────────────────────────────────────────────┘
(0:00C0h)
auf dem Tandy 1000TX kann dieser Interrupt über DIP Schalter
eingeschaltet oder ausgeschaltet werden.
(Intern) kein Koprozessor verfügbar( 80286+)
Anmerkung: der 80286 und spätere Maschinen können so programmiert sein, das ein
int 7 generiert wird, wenn eine ESC Instruktion durchgeführt werden
soll. Dies kann dazu benutzt werden, um einen Koprozessor der 80x87
Reihe nachzubilden. Er kann auch dazu benutzt werden, damit ein
mathematischer Koprozessor der nicht von Intel ist den 80x87
nachbilden kann.
┌─────────────────────────────────────────────────────────────────────────────┐
│ Interrupt 08h Zeit-Zähler │
└─────────────────────────────────────────────────────────────────────────────┘
(0:0020h) 55ms Zeit-Zähler "Takteinheit" wird 18.2mal pro Sekunde aufgerufen.
(IRQ0) 8259-1 Interrupt Steuereinheit
Aktualisiert die Systemzeit an [0040:006C] (niederwertiges Wort) und [0040:006E]
(höherwertiges Wort) und ruft den int 1Ch (Zeit-Zähler) auf. (int 1Ch zeigt auf eine
IRET Instruktion falls dies nicht von einem speicherresistenten Programm geändert
wurde). Der Zeit-Zähler Interrupt bekommt beim Systemstart die höchste
Priorität der maskierbaren Interrupts.
(Intern) Doppelter Fehler (80286+ geschützter Modus), wird aufgerufen sobald Mehrfachausnahmen
auf eine Instruktion auftreten, oder eine Ausnahme in der Ausnahmesteuerung
auftritt. Falls eine Ausnahme beim verarbeiten des doppelten Fehlers auftritt,
geht die CPU in den SHUTDOWN Modus (die Schaltung im PC/AT wandelt diesen in einem
Systemstart um).
Aufruf AH 08h
Rückgabe absolute Adressen:
40:6C Anzahl Interrupts seit dem Systemstart (4 Bytes)
40:70 Anzahl Tage seit dem Systemstart (1 Byte)
40:67 Tag zähler auf alle Produkte nach AT
40:40 Zähler für Motorabschaltung - wird vermindert, der Motor wird
abgeschaltet wenn der Zähler = 0 ist.
┌─────────────────────────────────────────────────────────────────────────────┐
│ Interrupt 09h Tastatur │
└─────────────────────────────────────────────────────────────────────────────┘
(0:0024h) Wird immer aufgerufen wenn eine Taste gedrückt oder losgelassen wird.
(IRQ1) Dies ist normalerweise ein Scan-Code, kann auch auch ein ACK oder NAK
eines Befehls auf der AT-type Tastatur sein. Die Hardware liefert einen
nicht-ASCII Scan-Code der Taste die gedrückt wurde zurück, der vom I/O
Port 60h gelesen wird.
Der servicer sendet eine Bestätigung der Taste durch das umschalten
von Bit 7 am Port 61h. (Port 61h sollte zuerst gelesen werden, dann
Bit 7 ORed an, Ausgabe an Port 61h, dann ANDed aus, und dann an Port
61h zurückgesendet werden).
Die gelesene Taste ist entschlüsselt um ein ein ASCII Zeichen zu liefern, besondere
Funktionstasten (wie F1) oder Steuerungsfunktion wie etwa die linke Umschalttaste.
Das konvertierte ASCII Zeichen wird in die nächstes verfügbare Position
des kreisförmigen Tastaturpuffer abgestellt. Sollte das Ende des Puffers erreicht
werden, wird die eingegebene Taste nicht angenommen.
Der Anfang des Puffers zeigt auf die älteste gedrückte Taste im Puffer
welche noch nicht entfernt bzw. verarbeitet wurde. (normalerweise wird die Taste
entfernt, wenn ein int 16h beutzt wird und dieser den Tastencode an den
Anrufer zurückgibt).
Der 16 Worte große Tastaturpuffer kann bis zu 16 Tasten enthalten. Falls der
Anfang und das Ende des Puffers gleich ist, ist der Puffer leer.
Zulässige Tasten in dem Puffer umfassen den Auswahlcode im höherwertigen
Byte und das ASCII Zeichen im niederwertigen Byte.
Wenn die gedrückte Taste kein gleichwertiges ASCII Zeichen hat
(z.B. F1 bis F12), enthält das niederwertige Byte Null.
Umschalt- und Steuertasten werden nicht im Puffer abgestellt, erscheinen aber
in den beiden Bytes des Tastaturkennzeichens an der absoluten Adresse
[0040:0017,18].
Besondere Tastenkombinationen sind die Ursache dafür, daß andere Ereignisse auftreten:
a) Ctrl-Alt_Del - Computer neu starten
b) Print Screen - aufrufen int 5 um den aktuellen Bildschirm zu drucken
c) Ctrl-Break - aufrufen int_1Bh Tastaturunterbrechung (DOS)
d) Pause - warten bis eine ASCII Taste gedrückt wird, ohne diese
in den Tastaturpuffer abzustellen.
(Intern) Mathematische Einheit Sicherungsfehler (80286+ geschützt Modus)
Aufruf AH 09h
Rückgabe absolute Adressen:
40:17 Bit
0 rechte Umschalttaste gedrückt
1 linke Umschalttaste gedrückt
2 CTRL (STRG) Taste gedrückt
3 Alt Taste gedrückt
4 ScrollLock an
5 NumLock an
6 CapsLock an
7 Einfügen an
40:18 Bit
0 linke Control Taste gedrückt
1 linke ALT Taste gedrückt
2 SysReq Taste gedrückt
3 Pause an
4 ScrollLock Taste ist gedrückt
5 NumLock Taste ist gedrückt
6 CapsLock Taste ist gedrückt
7 Einfügen Taste ist gedrückt
40:96 Bit
0 letzter Code war E1h Code
1 letzter Code war E0h Code
2 rechte Control Taste gedrückt
3 rechte ALT Taste gedrückt
4 erweiterte Tastatur mit 101 Tasten installiert
5 NumLock erzwingen falls rd ID & kbx
6 letztes Zeichen war erstes ID Zeichen
7 lese ID (muß Bit 0 sein)
40:97 Bit
0 ScrollLock Anzeige
1 NumLock Anzeige
2 CapsLock Anzeige
3 circus System Anzeige
4 ACK empfangen
5 zurückgesendetes Empfangskennzeichen
6 Modusanzeiger aktualisieren
7 Kennzeichen Tastaturübertragungsfehler
40:1E Tastaturpuffer (20h Bytes)
40:1C Zeiger zum Pufferende
40:72 1234h falls ctrl-alt-del auf der Tastatur gedrückt wurde
AL Auswahlcode
Anmerkung 1) Int 05h wird aufgerufen falls PrtSc Taste gedrückt wurde.
2) Int 1Bh wird aufgerufen falls Ctrl-Break Taste gedrückt wurde.
3) Int 15h, AH= 85h wird aufgerufen, falls auf dem AT die SysReq Taste
gedrückt wurde.
4) Int 15h, AH= 4Fh wird bei den Maschinen nach dem AT aufgerufen.
5) Int 16h, BIOS Tastaturfunktionen benutzen diesen Interrupt.
┌─────────────────────────────────────────────────────────────────────────────┐
│ Interrupt 0Ah EGA vertikaler Strahlrücklauf │
└─────────────────────────────────────────────────────────────────────────────┘
(0:0028h) benutzt von EGA für vertikalen Strahlrücklauf
(IRQ2) 8259-1 Interrupt Steuereinheit
Anmerkung 1) Die TOPS und PCnet Adapter benutzen diesen IRQ als Standardwert.
2) Auf Systemen die mit 2 Interrupt-Controller Chips (8259) ausgestattet
sind, wird IRQ 2 benutzt um den zweiten Interrupt-Controller zu unterstützen.
In diesem Fall, wird int 71h (IRQ 9) benutzt, um IRQ 2 zu ersetzen.
Aufrufe der Hardware von int 71h werden zu diesen Interrupt umgeleitet
um die Kompatibilität zu erhalten.
3) viele VGA Karten benutzen diesen Interrupt nicht.
(Intern) ungültiges Task State Segment (80286+ geschützter Modus)
┌─────────────────────────────────────────────────────────────────────────────┐
│Interrupt 0Bh Kommunikations-Controller (serieller Port) hdw. Einsprungstelle│
└─────────────────────────────────────────────────────────────────────────────┘
(0:002Ch) serieller Port 2 (COM2) 8259-1
(IRQ3)
Anmerkung 1) IRQ 3 kann von SDLC (Synchronous Data-Link Control) belegt sein oder
von bisynchronen Kommunikationskarten an Stelle des seriellen Ports.
2) der TOPS und PCnet Adapter benutzen alternativ diesen Interrupt.
3) auf PS/2s, COM2 bis COM8 benutzen diesen IRQ gemeinsam.
4) bei den meisten seriellen Karten, COM4 benutzt diesen IRQ.
5) auf dem Commodore Amiga 2000 mit der PC Bridge Karte, dieser Interrupt
wird zur Kommunikation zwischen dem Amiga Systemboard und der PC Bridge
Karte benutzt. Dies war wahrscheinlich die niedrigste IRQ Ebene die sicher
benutzt werden konnte, begrenzt aber die Möglichkeiten der A2000's
Netzwerkkarten oder ähnliches zu benutzen.
6) dies Interrupt wird zum Teil von dem stack-switching Code der im
Zusammenhang mit dem lokalen Netzwerkadapter benutzt wird in
DOS 3.2 hinzugefügt.
7) der PS/2 legt COM3 bis COM8 an die Portadressen über 3FFh (nicht
geeignet für ältere PCs) und alle benutzen gemeinsam den IRQ3.
(Intern) Nicht vorhanden (80286+ geschützt Modus)
wird erzeugt sobald Segmentregister geladen werden soll und der Segment-
deskriptor erkennt, daß das Segment sich zur Zeit nicht im Speicher
befindet. Kann außerdem benutzt sein um virtuellen Arbeitsspeicher
zu realisieren.
┌─────────────────────────────────────────────────────────────────────────────┐
│Interrupt 0Ch Kommunikations-Controller (serieller Port) hdw. Einsprungstelle│
└─────────────────────────────────────────────────────────────────────────────┘
(0:0030h) serieller Port 1 (COM1) oder internes Modem im PCjr oder Convertible
(IRQ4) 8259-1
Anmerkung 1) IRQ 4 kann von SDLC (synchronous data-link control) belegt sein oder
von bisynchronen Kommunikationskarten an Stelle des seriellen Ports.
2) auf einigen PCs, wird dieser Interrupt mit COM3 gemeinsam benutzt.
3) Tandy Computer benutzen den IRQ4 an Stelle von IRQ5 als Festplatteninterrupt.
4) Manchmal wird eine bessere Leistung erreicht, wenn die Maus für IRQ4
an Stelle von IRQ3 eingestellt ist, da einige Maustreiber die System-
interrupts für längere Perioden sperren.
(Intern) Stapelfehler (80286+ geschützt Modus)
erzeugte beim Stapelüberlauf/unterlauf. Beachten sie, das der 80286
wenn SP= 1 ist in den echten Modus zurückschaltet, bevor der Stapel
gesichert wird (PUSH).
┌─────────────────────────────────────────────────────────────────────────────┐
│ Interrupt 0Dh Festplatte │
└─────────────────────────────────────────────────────────────────────────────┘
(0:0034h) gemischte Benutzung
(IRQ5) 8259-1
Anmerkung 1) verschiedene Tandy 1000 Modelle benutzen diesen für die 60Hhz RAM
Auffrischung oder als "optionalen Bus Interrupt."
2) benutzt von der Festplatte auf dem IBM XT und den meisten Kompatiblen.
3) LPT2 auf AT, XT/286, und PS/2
4) Dummy CRT, vertikaler Strahlrücklauf auf PCjr
(Intern) allgemeine Schutzübertretung (80286+)
wird aufgerufen, sobald im echten Modus eine Instruktion versucht auf einen
Wort Operand am Offset 0FFFFh zuzugreifen oder eine PUSH MEM oder POP MEM
MEM Instruktion einen ungültigen Bit Code im zweiten Byte enthält.
┌─────────────────────────────────────────────────────────────────────────────┐
│ Interrupt 0Eh Disketten Interrupt │
└─────────────────────────────────────────────────────────────────────────────┘
(0:0038h) erzeugt vom Disketten-Controller bei Beendigung eines Arbeitsganges.
(IRQ6) (setzt Bit 8 an 40:3E)
(Intern) Seitenfehler (80386+ Native Modus)
┌─────────────────────────────────────────────────────────────────────────────┐
│ Interrupt 0Fh reserviert von IBM │
└─────────────────────────────────────────────────────────────────────────────┘
(0:003Ch) IRQ7 wird vom 8259 PPI Interrupt (LPT1, LPT2) benutzt
(IRQ7)
Anmerkung 1) erzeugt vom LPT1 Druckeradapter sobald Drucker bereit ist. Viele
Druckeradapter erzeugen dies Interrupt korrekt.
2) dies Interrupt wird normalerweise vermieden. Falls ein fehlerhafter
Interrupt auftritt, zeigt der Unterbrechungszeiger auf diesen Punkt
(wenn dies von einem falsch programmierten 8259 PIC veranlaßt wurde)